時間旅行一直以來都是電影或動漫的經典主題;時間處理也是--它是程式語言的經典卡關問題。
Carbon 是 PHP 的第三方時間處理套件。它繼承了原生的 Datatime ,並新增了許多語意化的行為,讓處理時間的難度降低許多。
比方說:想像自己是未來世界的特南克斯,乘坐的時光機程式是用 PHP 寫的,那該如何知道 20 年前的 timestamp 呢?
讓 Carbon 來處理就很簡單:
use Carbon\Carbon;
echo Carbon::now('Asia/Tokyo')->subYears(20)->timestamp;
或是維斯在黃金弗利沙毀滅地球的時候,決定出手倒退時光。那他怎麼定位出三分鐘前的時間點呢?
對 Carbon 來說只是小菜一碟:
use Carbon\Carbon;
echo Carbon::now('Asia/Tokyo')->subMinutes(3)->timestamp;
總括來說, Carbon 處理了下面的問題:
語意化的取值方法,如:
Carbon::now(); // 現在
Carbon::today(); // 今天 00:00:00
Carbon::tomorrow(); // 明天 00:00:00
語意化的比較方法,如:
$time1->lessThan($time2); // $time1 是否比 $time2 早
$time1->closest($time2, $time3); // 取得離 $time1 比較近的時間
$time1->isWeekend(); // $time1 是週末嗎
頭痛的時區問題
echo Carbon::now('Asia/Taipei');
echo Carbon::now('Asia/Tokyo');
// 兩個時間會差一小時
明天就來看看 Carbon 是如何解決這些問題的。